package com.cy.pj.module.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


/**
 * 业务场景:
 * 1. 客户端向服务端发起请求,   服务端处理完请求后, 直接将相应数据封装到model中, 然后和view一起响应到客户端
 * 问题分析
 *    1) 在上述场景中, 如果Controller处理数据的时间较长, 会直接影响页面的返回(Model和view 可能不会同时加载)
 *    2) 前端高速发展中, 各种客户端百花齐放, 有些设备可能只需要数据, 不需要页面,  我们将Model和View绑定到一起
 *       扩展性不好;
 *
 *
 *  说明: 中小企业的内部管理系统就是 Springboot + thymeleaf
 */


@Controller
public class ModeViewController {

    /*方法一: 数据量小的时候, Model和View可以同时加载出来*/
    @RequestMapping("/doModelAndView01")
    public String doModelAndView1(Model model){
//        参数model 有spring web模块自己创建,  可以存储数据
        model.addAttribute("username", "johnson");
        model.addAttribute("state", "enable");
        return "modelview";
//        响应结果, 在SpringMVC中, 会帮我们创建为ModeAndView对象
    }

    /*方法二*/
    @RequestMapping("doModelAndView02")
    public ModelAndView doModelAndView2(){
        ModelAndView mv = new ModelAndView();
        mv.addObject("username","alice");
        mv.addObject("state","disable");
        mv.setViewName("modelview");
        return mv;
    }

}
